Software applications, components and services may be authored using a management container that managers source code, data connections, and references. Such a container will be referred to hereinafter as a “project”. VISUAL STUDIO® uses such containers and calls such containers projects, but other mechanisms may also use projects in the broader sense of the word. A project is organized as part of a solution, which can contain multiple projects that interface with each other at development time. Each project may be built and deployed to form a corresponding application that interfaces with other applications (formulated by building and deploying the other projects in the solution) during runtime. For instance, in a two-tiered application, there might be a client application and a server application at runtime. At development time, the two-tiered solution may include the corresponding client project and the corresponding server project.
Many applications now involve some type of interaction with a database. Developers write applications that use data and the interface to this data is the database schema. In order to interact with the data, the application will typically contain a local, translated representation of the database's schema useful for application development. This representation is usually a textual representation. It is inevitable that the database's schema will change over time. This database schema change is termed herein “drift”. Because the schema is not typically represented as compilable code, the application project cannot help the developer detect when database schema drift occurs at development time. If the developer does not respond to this database schema drift, then the application will likely experience runtime errors. It can be quite difficult to resolve this misunderstanding of the database schema by the application project.